<?php
	require_once PATH_OBJECT.'dataObject.php';
	
class dataObject_personne extends dataObject
{    
	/* @desc    Identifiant de la personne
     * @var     int
     */
    public $_IDENTIFIANT_PERSONNE  = 0;
	
	
	/* @desc    type de la personne
     * @var     enum('P', 'M')
     */
    public $_TYPE_PERSONNE  = '';
	
	
	/* @desc    état de la personne
     * @var     enum('A', 'D', 'I')
     */
    public $_ETAT_PERSONNE   = '';
	
	
	/* @desc    nom de la personne physique
     * @var     varchar(30)
     */
    public $_NOM_PERSONNE   = '';
	
	
	/* @desc    prénom de la personne physique
     * @var     varchar(30)
     */
    public $_PRENOM_PERSONNE   = '';
	
	
	/* @desc    civilite de la personne  physique
     * @var     varchar(5)
     */
    public $_CIVILITE_PERSONNE   = '';
	
	
	/* @desc    nom de jeune fille de la personne physique
     * @var     varchar(30)
     */
    public $_NOM_JEUNE_FILLE_PERSONNE   = '';
	
	
	/* @desc    raison sociale de la personne morale
     * @var     varchar(30)
     */
    public $_RAISON_SOCIALE   = '';
	
	
	/* @desc    date de naissance de la personne
     * @var     date
     */
    public $_DATE_NAISSANCE_PERSONNE   = '';
	
	
	/* @desc    leiu de naissance de la personne
     * @var     varchar(30)
     */
    public $_LIEU_NAISSANCE_PERSONNE   = '';
	
	
	/* @desc    sexe de la personne  physique
     * @var     enum('F', 'M')
     */
    public $_SEXE_PERSONNE   = '';
	
	
	/* @desc    profession de la personne  physique
     * @var     varchar(30)
     */
    public $_PROFESSION_PERSONNE   = '';
	
	
	/* @desc    employeur de la personne  physique
     * @var     varchar(30)
     */
    public $_EMPLOYEUR_PERSONNE   = '';
    
    
  	public function __construct( $iId=0 )
    {
       parent::__construct();

       if ( $iId != 0 )
       {
            $sQuery = "SELECT   *   /*+ dataObject_personne::__construct */  
                       FROM personne 
            		   WHERE Identifiant_personne = ".$iId;
            
            $aRows =  self::$_oConnexion->query($sQuery);
	  		$aRow = $aRows[0];
            $this->_IDENTIFIANT_PERSONNE		= $iId;
			$this->_TYPE_PERSONNE				= $aRow["Type_personne"];
			$this->_ETAT_PERSONNE				= $aRow["Etat_personne"];
			$this->_NOM_PERSONNE 				= $aRow["Nom_personne"];
			$this->_PRENOM_PERSONNE 			= $aRow["Prenom_personne"];
			$this->_CIVILITE_PERSONNE 			= $aRow["Civilite_personne"];
			$this->_NOM_JEUNE_FILLE_PERSONNE 	= $aRow["Nom_jeune_fille_personne"];
			$this->_RAISON_SOCIALE 				= $aRow["Raison_sociale"];
			$this->_DATE_NAISSANCE_PERSONNE 	= self::showDate($aRow["Date_naissance_personne"]);
			$this->_LIEU_NAISSANCE_PERSONNE 	= $aRow["Lieu_naissance_personne"];
			$this->_SEXE_PERSONNE 				= $aRow["Sexe_personne"];
			$this->_PROFESSION_PERSONNE 		= $aRow["Profession_personne"];
			$this->_EMPLOYEUR_PERSONNE 			= $aRow["Employeur_personne"];
						
       }
    }
    /**
     * récupere la table personne selon le(s) criter(s) précisés ou pas 
	 */
    function personne_select( $sCritere = null )
    {
        $aRow = false;
    	$sQuery = "SELECT   *    
                   FROM personne 
            	   WHERE 1=1 
            	   {$sCritere}";
        $aRow =  self::$_oConnexion->query($sQuery);

        return $aRow;
    }
    

    /**
     * RENVOIE LA PERSONNE PHYSIQUE SÉLECTIONNEE SELON LE CRITÈRE DONNÉ
	 */
    function personne_selectId_physique($sType,$sEtat,$sNom,$sPrenom,$sCivilite,$sNomJFille,$sDateN,$SLieuN,$sSexe,$sProfession,$sEmployeur)
    {

        $aRow = false;
    	$sQuery = "SELECT	distinct Identifiant_personne  
                   FROM personne 
            	   WHERE 
            	   		 (Type_personne				='".$sType."') 		AND  
            	   		 (Etat_personne 			='".$sEtat."')		AND  
            	   		 (Nom_personne				='".$sNom."') 		AND 
            	   		 (Prenom_personne			='".$sPrenom."')	AND 
            	   		 (Date_naissance_personne	=".self::$_oConnexion->date($sDateN)." ) AND 
            	   		 (Lieu_naissance_personne	='".$SLieuN."') 	AND 
            	   		 (Sexe_personne				='".$sSexe."') 		AND  
            	   		 (Civilite_personne			='".$sCivilite."') 	AND
            	   		 (Nom_jeune_fille_personne 	='".$sNomJFille."' 	or Nom_jeune_fille_personne is null) 	AND
						 (Profession_personne		='".$sProfession."' or Profession_personne is null) 		AND 
            	   		 (Employeur_personne		='".$sEmployeur."' 	or Employeur_personne is null)";
            	   
        $aRow =  self::$_oConnexion->query($sQuery);
        
        //return sizeof($aRow);
        return $aRow[0]['Identifiant_personne'];
    }
   
    
    /**
     * RENVOIE LA PERSONNE MORALE SÉLECTIONNEE SELON LE CRITÈRE DONNÉ
	 */
	function personne_selectId_morale($sType,$sEtat,$sRSociale)
    {

        $aRow = false;
    	$sQuery = "SELECT	distinct Identifiant_personne    
                   FROM personne 
            	   WHERE 
            	   		 (Type_personne		='".$sType."' 	 ) 	AND
            	   		 (Etat_personne 	='".$sEtat."' 	 )	AND 
            	   		 (Raison_sociale	='".$sRSociale."')";
            	   
        $aRow =  self::$_oConnexion->query($sQuery);

        //return sizeof($aRow);
        return $aRow[0]['Identifiant_personne'];
    }
   
  //Recherche personne suivant nom,prenom ou date de naissance  
 function personne_get_listPersonneNomPersonne( $sCritere1,$sCritere2)
    {
        $aRow = false;
    	$sQuery = "SELECT   *    
                   FROM personne 
            	   WHERE Type_personne="."'".$sCritere1."'"."".
            	   "and Nom_personne LIKE"." "."'".$sCritere2."'"
            	    ;
        $aRow =  self::$_oConnexion->query($sQuery);

        return $aRow;
    }
  //Recherche personne suivant nom,prenom ou date de naissance  
 function personne_get_listPersonnePrenomPersonne( $sCritere1,$sCritere2)
    {
        $aRow = false;
    	$sQuery = "SELECT *    
                   FROM personne 
            	   WHERE Type_personne= '".$sCritere1."'
    			   AND Prenom_personne LIKE '".$sCritere2."'"   ;
    	
        $aRow =  self::$_oConnexion->query($sQuery);

        return $aRow;
    }
  //Recherche personne suivant nom,prenom ou date de naissance  
 function personne_get_listPersonneDatePersonne( $sCritere1,$sCritere2)
    {
        $aRow = false;
    	$sQuery = "SELECT   *    
                   FROM personne 
            	   WHERE Type_personne="."'".$sCritere1."' 
            	   AND Date_naissance_personne = " .self::$_oConnexion->date($sCritere2) ;
        $aRow =  self::$_oConnexion->query($sQuery);

        return $aRow;
    }
    
     //Détail personne qui a un type assure 
 function personne_getDetailIntervenantSous( $iIdcontrat,$iIdpersonne )
    {
        $aRow = false;
    	$sQuery = "SELECT  DISTINCT personne.Identifiant_personne,Nom_personne,Prenom_personne,
    				Type_personne,Civilite_personne,Identifiant_contrat,
    				Sexe_personne,Type_role,Etat_role,Type_assure    
                   FROM personne ,role 
            	   WHERE role.Identifiant_personne=personne.Identifiant_personne
            	   AND personne.Identifiant_personne="."'".$iIdpersonne."'".
    				"AND Type_role='S' AND Identifiant_contrat="."'".$iIdcontrat."'"
    				;       
          $aRow =  self::$_oConnexion->query($sQuery);

        return $aRow;
    }
    
   //Détail personne qui n'a  pas un type assure 
 function personne_getDetailIntervenant($iIdcontrat,$iIdpersonne)
    {
        $aRow = false;
    	$sQuery="SELECT  DISTINCT personne.Identifiant_personne,Nom_personne,
    				Prenom_personne,Etat_personne,Nom_jeune_fille_personne,
    				Lieu_naissance_personne,Date_naissance_personne,Employeur_personne,Profession_personne,
    				Type_personne,Civilite_personne,Identifiant_contrat,
    				Sexe_personne,Type_role,Etat_role,Type_assure    
                   	FROM personne,role 
            	   	WHERE role.Identifiant_personne=personne.Identifiant_personne
            	   	AND personne.Identifiant_personne="."'".$iIdpersonne."'".
    				" AND Identifiant_contrat="."'".$iIdcontrat."'"
    				;       
          $aRow =  self::$_oConnexion->query($sQuery);

        return $aRow;
    }
    
    //adresse intervenant contrat
	function personne_getAdresseIntervenant( $idPersonne )
    {
        
    	$sQuery = "SELECT Ligne1_adresse, Ligne2_adresse, Ligne3_adresse, 
    		Type_adresse, Etat_adresse   
                   FROM adresse 
            	   WHERE Identifiant_personne= '".$idPersonne."' ";          	    ;
        $aRow =  self::$_oConnexion->query($sQuery);

        return $aRow;
    }
    
	
    
    //Ajout MAMY
    // reécupere les identifiants de tous les assurre ,leur contrat date d'effet du contrat et la date ne naissance de l'assure
public function getAssureActif( $sCritere = null )
    {
    	$sQuery = "SELECT distinct r.Identifiant_personne ,r.Identifiant_contrat, Date_effet_contrat,Date_naissance_personne, Type_assure ,Etat_role, Date_echeance_contrat
                   FROM role r,contrat c,personne p
            	   WHERE Type_role='A' AND p.Identifiant_personne=r.Identifiant_personne  AND r.Identifiant_contrat=c.Identifiant_contrat"  ;
    	 $aRow =  self::$_oConnexion->query($sQuery);

        return $aRow[0];
        
    }
    
public function modifieEtatRoleAssureActif(){
		$bup = false;
		
		$sReq = "UPDATE role SET Etat_role = 'R'  WHERE Type_role='A' AND  Identifiant_contrat=%s AND Identifiant_personne=%s";
		
		$bup = self::$_oConnexion->execute($sReq);
		
		return $bup;
	}
    
    //communication intervenant contrat
function personne_getCommunicationIntervenant( $sCritere )
    {
        $aRow = false;
    	$sQuery = "SELECT Type_coordonnees_communication,Etat_coordonnees_communication,
    				Valeur_coordonnee_communication   
                   FROM coordonneescommunication 
            	   WHERE Identifiant_personne='".$sCritere."'";          	    ;
        $aRow =  self::$_oConnexion->query($sQuery);

        return $aRow;
    }
    
    //recupere le type de role s
public function personne_getTypeRoleFromIdPersonne($iIdpersonne)
    {
        $aRow = false;
    
	    	$sCritere = "SELECT Type_role FROM role  
	    				WHERE Identifiant_personne ="."'".$iIdpersonne."'"
	    				;
	        $aRow =  self::$_oConnexion->query($sCritere);

        return $aRow[0]['Type_role'];
    }
    
	public function personne_getTypeRoleFromIdRole($iIdRole)
    {
      	$sCritere = "SELECT Type_role FROM role  
	    				WHERE Identifiant_role = '".$iIdRole."'";
	    $aRow =  self::$_oConnexion->query($sCritere);

	    if(!empty($aRow))
        	return $aRow[0]['Type_role'];
        else return false;
    }
    
	/**
     * récupere le type de personne selon l'identifiant donné. 
	 */
    function personne_getType($nIdpers)
    {
        $aRow = false;
    	$sQuery = "SELECT   Type_personne    
                   FROM personne 
            	   WHERE Identifiant_personne=".self::$_oConnexion->text($nIdpers);
        $aRow =  self::$_oConnexion->query($sQuery);

        return $aRow[0]['Type_personne'];
    }
    
    //récupére le type de personne
 function personne_getTypePersonne()
    {
        $aRow = false;
    	$sQuery = "SELECT DISTINCT  Type_personne    
                   FROM personne";
        $aRow =  self::$_oConnexion->query($sQuery);

        return $aRow;
    }
    
	public function personne_getList()
    {
        $aRow = false;
    	$sCritere = " ";
        $aRow =  $this->personne_select ($sCritere);
        
        return $aRow;
    }
    
    /**
     * Calcule l'âge d'une année de naissance passée en paramètre
     *
     * @return unknown
     */
	public function personne_getAge($naiss)  {
		  //list($annee, $mois, $jour) = split('[-.]', $naiss);
		  $tab = explode('-', $naiss);
		 
		  $annee = $tab[2]; $mois = $tab[1]; $jour = $tab[0];
		  $today['mois'] = date('m');
		  $today['jour'] = date('j');
		  $today['annee'] = date('Y');
		
		  $annees = $today['annee'] - $annee;
		  if ($today['mois'] <= $mois) {
		    if ($mois == $today['mois']) {
		      if ($jour > $today['jour'])
		        $annees--;
		      }else
		      $annees--;
		  }
		  return $annees;
	}

	/**
	 * Enter description here...
	 *
	 * @return unknown
	 */
	public function personne_insert()
    {
    	$bId = false;
    	$sQuery = "INSERT INTO personne (
			    			Type_personne ,
							Etat_personne ,
							Nom_personne ,
							Prenom_personne ,
							Civilite_personne ,
							Nom_jeune_fille_personne ,
							Raison_sociale ,
							Date_naissance_personne ,
							Lieu_naissance_personne ,
							Sexe_personne ,
							Profession_personne ,
							Employeur_personne 
			    			) values (
						'$this->_TYPE_PERSONNE' ,
						'$this->_ETAT_PERSONNE' ,
						'$this->_NOM_PERSONNE' ,
						'$this->_PRENOM_PERSONNE' ,
						'$this->_CIVILITE_PERSONNE' ,
						'$this->_NOM_JEUNE_FILLE_PERSONNE' ,
						'$this->_RAISON_SOCIALE' ,
						".self::$_oConnexion->date($this->_DATE_NAISSANCE_PERSONNE)." ,
						'$this->_LIEU_NAISSANCE_PERSONNE' ,
						'$this->_SEXE_PERSONNE' ,
						'$this->_PROFESSION_PERSONNE' ,
						'$this->_EMPLOYEUR_PERSONNE' 
			    			)";
    		
        	$bId = self::$_oConnexion->execute($sQuery);
        	
    	return $bId;
    }
    
    public function personne_update()
    {
    	//FS 10112010 @todo ajouter formatage date naissance
    	//self::$_oConnexion->date($this->_DATE_NAISSANCE_PERSONNE);
    	$sQuery = "UPDATE personne SET 
    		 	Type_personne 				= '$this->_TYPE_PERSONNE' ,
				Etat_personne 				= '$this->_ETAT_PERSONNE' ,
				Nom_personne 				= '$this->_NOM_PERSONNE' ,
				Prenom_personne 			= '$this->_PRENOM_PERSONNE' ,
				Civilite_personne			= '$this->_CIVILITE_PERSONNE' ,
				Nom_jeune_fille_personne	= '$this->_NOM_JEUNE_FILLE_PERSONNE' ,
				Raison_sociale 				= '$this->_RAISON_SOCIALE' ,
				Date_naissance_personne 	= ".self::$_oConnexion->date($this->_DATE_NAISSANCE_PERSONNE).",
				Lieu_naissance_personne 	= '$this->_LIEU_NAISSANCE_PERSONNE',
				Sexe_personne 				= '$this->_SEXE_PERSONNE' ,
				Profession_personne 		= '$this->_PROFESSION_PERSONNE' ,
				Employeur_personne 			= '$this->_EMPLOYEUR_PERSONNE'
	    		WHERE Identifiant_personne 	= '".$this->_IDENTIFIANT_PERSONNE."'" ;
	    	
    	
    			$nId = self::$_oConnexion->execute($sQuery);
    	return $nId;
    }
    
    public function personne_updateRole($idRole, $sTypeRole, $sTypeAssure)
    {

    	$sQuery = "UPDATE role SET
    	 			Type_role 	= '$sTypeRole' ,
					Etat_role	= 'A' ,
					Type_assure = '$sTypeAssure' 
	    		WHERE Identifiant_role 	= '".$idRole."'" ;
	    	
    			$id = self::$_oConnexion->execute($sQuery);
    	return $id;
    }
    
	/**
	 * Création de la personne et du rôle associé
	 *
	 * @return unknown
	 * //FS 10112010 @todo ajouter formatage date naissance
	 */
	public function insertPersonneRole($sTypeAssure,$sTypeRole,$nIdContrat,$nIdOffre,$nIdProduit,$nIdFormule, $acdtvBen = null)
	    {

	    	$oGarantie = new dataObject_garantieSouscrite();
	    	$bIdp = false;
	    	$bIdr = false;
	    	$bIdG = false;
	    	$bIdC = false;
	    	
	    	$sQueryPersonne = "INSERT INTO personne (
	    			Type_personne ,
					Etat_personne ,
					Nom_personne ,
					Prenom_personne ,
					Civilite_personne ,
					Nom_jeune_fille_personne ,
					Raison_sociale ,
					Date_naissance_personne ,
					Lieu_naissance_personne ,
					Sexe_personne ,
					Profession_personne ,
					Employeur_personne 
	    			) values (
				'$this->_TYPE_PERSONNE' ,
				'$this->_ETAT_PERSONNE' ,
				'$this->_NOM_PERSONNE' ,
				'$this->_PRENOM_PERSONNE' ,
				'$this->_CIVILITE_PERSONNE' ,
				'$this->_NOM_JEUNE_FILLE_PERSONNE' ,
				'$this->_RAISON_SOCIALE' ,
				".self::$_oConnexion->date($this->_DATE_NAISSANCE_PERSONNE)." ,
				'$this->_LIEU_NAISSANCE_PERSONNE' ,
				'$this->_SEXE_PERSONNE' ,
				'$this->_PROFESSION_PERSONNE' ,
				'$this->_EMPLOYEUR_PERSONNE' 
	    			)";
	    		
	    			self::$_oConnexion->beginTransaction();// mysql_query("START TRANSACTION", self::$_oConnexion);
	    			
		        	$bIdp = self::$_oConnexion->execute($sQueryPersonne); 
		        	//FS 10112010 @todo ne pas considerer Identifiant_offre dans ce cas d'insertion
		        	$sQueryRole = "INSERT INTO role (
		        						Identifiant_role, 
		        						Type_role, 
		        						Etat_role, 
		        						Type_assure, 
		        						Identifiant_personne, 
		        						Identifiant_contrat, 
		        						Identifiant_offre
		        						)values(0,'$sTypeRole','A','$sTypeAssure','$bIdp','$nIdContrat',NULL)";//'$nIdOffre'
		        						
		        	if($bIdp){					
		    			$bIdr = self::$_oConnexion->execute($sQueryRole); 
		    			if($bIdr){	
		    				if($sTypeRole = "A"){ //SI LA PERSONNE CREEE A UN ROLE DE TYPE ASSURe					
			    				$bIdG = $oGarantie->insertGarantieSouscrite_SelectGarantie($nIdProduit,$nIdContrat,$bIdp,$nIdFormule);
		    					if($bIdG){
		    						self::$_oConnexion->commit();
			    					//mysql_query("commit");
		    					}else{
		    						self::$_oConnexion->rollback();
		    						//mysql_query("rollback");
		    					}
		    				}elseif($sTypeRole = "B")
		    				{
		    					/**
		    					 * si la personne créée joue un role de bénéficiaire, 
		    					 * On modifie le contrat en alimentant la clause bénéficiaire 
		    					 * avec le code de la condition de vente de type 'clause bénéficiaire' --> BA
		    					 */
		    					$ocontrat_upadte = new dataObject_contrat($nIdContrat);
		    					$ocontrat_upadte->_CLAUSE_BENEFICIAIRE = $acdtvBen[0]['Code_condition_vente'];
		    					
		    					$bIdC = $ocontrat_upadte->contrat_update();
		    						    					
		    					if($bIdC){
		    						self::$_oConnexion->commit();
		    					}else{
		    						self::$_oConnexion->rollback();	
		    					}
		    				}
		    			}else{
		    				self::$_oConnexion->rollback();
		    			}
		        	}else{
		        		self::$_oConnexion->rollback();
		        	}
		        	
	    	$retour  = '';	
	    	
	    	if($sTypeRole == "A") 	$retour =	$bIdp."-".$bIdr."-".$bIdG."-".$sTypeRole;
	    	
	    	if($sTypeRole == "B") 	$retour =	$bIdp."-".$bIdr."-".$bIdC."-".$sTypeRole;
	    	
	    	return $retour;
	    }
	    
	    /**
	     * Enregistre un nouveau role pour la personne $idPersonne sur le contrat $idContrat
	     *
	     * @param string $sTypeRole
	     * @param char $sEtatRole
	     * @param string $sTypeAssure
	     * @param int $idPersonne
	     * @param int $idContrat
	     * @param int $idOffre si TypeRole <<partenaire>>, null par defaut
	     * @return identifiant role 
	     */public function insertRole ($sTypeRole, $sEtatRole, $sTypeAssure, $idPersonne, $idContrat, $idOffre=null )
	    {
	    	$sQueryRole = "INSERT INTO 
	    	role (Type_role, 
        		Etat_role, 
        		Type_assure, 
        		Identifiant_personne, 
        		Identifiant_contrat, 
        		Identifiant_offre
        		)values 
        		('$sTypeRole', '$sEtatRole', '$sTypeAssure', $idPersonne, $idContrat, ".self::$_oConnexion->escape_null($idOffre)." )";
        		
	    	$idRetour = self::$_oConnexion->execute($sQueryRole);
	    	return $idRetour;
	    }
	    
	    /**
	     * RADIATION D'UN INTERVENANT
	     */
		public function personne_Radier($nIdContrat, $IdPersonne, $sTypeRole)
		{	
			//MODIFICATION DU ROLE DE LA PERSONNE
			$sReqR = "UPDATE role SET Etat_role='R' WHERE Identifiant_personne='".$IdPersonne."' AND Identifiant_contrat='".$nIdContrat."' AND Type_role = '".$sTypeRole."'";
			
			//MODIFICATION DU CONTRAT SI LA PERSONNE JOUE LE ROLE DE BENEFICIAIRE
			$sReqC ="UPDATE contrat set Clause_beneficiaire_contrat = 'A' WHERE Identifiant_contrat='".$nIdContrat."'";
			
			//MODIFICATION DES GARANTIE SOUSCRITES DE LA PERSONNE
			$sReqG = "UPDATE garantiesouscrite SET Etat_garantie_souscrite = 'I' WHERE Identifiant_personne='".$IdPersonne."' AND Identifiant_contrat='".$nIdContrat."'";
			
			
			$asQueries = array();
	    	
	    	if($sTypeRole == "B")
	    	{
	    		$asQueries[] = $sReqR;//indice 0
	    		$asQueries[] = $sReqG;//indice 1
	    		$asQueries[] = $sReqC;//indice 2
	    	}
	    	else
	    	{
	    		$asQueries[] = $sReqR;//indice 0
	    		$asQueries[] = $sReqG;//indice 1
	    	}
	    	//var_dump($asQueries);
	    	//ON RETOURNE L'INDICE DE LA REQUETE EN CAS DE ROLLBACK ET TRUE EN CAS DE COMMIT 
	    	return self::$_oConnexion->setTransaction($asQueries, true);
		}
		
		public function personne_RadierFromRole($idContrat, $idPersonne, $sTypeRole, $idRole)
		{	
			//MODIFICATION DU ROLE DE LA PERSONNE
			$sReqR = "UPDATE role SET Etat_role='R' WHERE Identifiant_role = '".$idRole."'";
			
			//MODIFICATION DU CONTRAT SI LA PERSONNE JOUE LE ROLE DE BENEFICIAIRE
			$sReqC ="UPDATE contrat set Clause_beneficiaire_contrat = 'A' WHERE Identifiant_contrat = '".$idContrat."'";
			
			//MODIFICATION DES GARANTIE SOUSCRITES DE LA PERSONNE
			$sReqG = "UPDATE garantiesouscrite SET Etat_garantie_souscrite = 'I' WHERE Identifiant_personne='".$idPersonne."' AND Identifiant_contrat= '".$idContrat."'";
			
			
			$asQueries = array();
	    	
	    	if($sTypeRole == "B")
	    	{
	    		$asQueries[] = $sReqR;//indice 0
	    		$asQueries[] = $sReqG;//indice 1
	    		$asQueries[] = $sReqC;//indice 2
	    	}
	    	else
	    	{
	    		$asQueries[] = $sReqR;//indice 0
	    		$asQueries[] = $sReqG;//indice 1
	    	}
	    	//var_dump($asQueries);
	    	//ON RETOURNE L'INDICE DE LA REQUETE EN CAS DE ROLLBACK ET TRUE EN CAS DE COMMIT 
	    	return self::$_oConnexion->setTransaction($asQueries,true);
		}
		
	public function personne_getInfosFromRole($idRole)
    {
    	$aRow = false;
    	if($idRole != null || $idRole != '' )
    	{
	        $sQuery = "SELECT /* personne_getInfosFromRole */ Identifiant_personne, Type_role, Type_assure , Etat_role ,  Identifiant_role 
	                   FROM role 
	            	   WHERE Identifiant_role= $idRole ";
	            	   
	        $aRow =  self::$_oConnexion->query($sQuery);
    	}
        if(!empty($aRow))
        	return $aRow[0];
        else return false;
    }
    
     /******************************** Mamadou ***************************/
    // Récupère les roles liés au contrat et à la personne
    public function personne_getRole($idContrat)
    {
        $aRow = false;
    	$sQuery = "SELECT   *    
                   FROM role 
            	   WHERE Identifiant_contrat = ".$idContrat."
            	   AND (Identifiant_personne = ".$this->_IDENTIFIANT_PERSONNE.")"

            	   ;
        $aRow =  self::$_oConnexion->query($sQuery);

        return $aRow;

    }
    
    // Récupère les garanties souscrites liées au contrat et à la personne
    public function personne_getGarantieSous($idContrat){
        $aRow = false;
    	$sQuery = "SELECT   *    
                   FROM garantiesouscrite
            	   WHERE Identifiant_contrat = ".$idContrat."
            	   AND (Identifiant_personne = ".$this->_IDENTIFIANT_PERSONNE.")"

            	   ;
        $aRow =  self::$_oConnexion->query($sQuery);

        return $aRow;
    	
    }
    
     /***************************FIN  Mamadou ***************************/
    /**
     * Recherche les personnes en base répondant aux criteres
     *
     * @param string $sType
     * @param string $sNom
     * @param string $sPrenom
     * @param date dd-mm-yyyy $sDateNaissance
     * @return array de resultat, false sinon
     */
	function personne_search($sType, $sNom, $sPrenom, $sDateNaissance, $iStart= null, $iMax = null )
    {
    	$sQuery = "SELECT distinct Identifiant_personne ,  
    				Type_personne, Nom_personne, Prenom_personne, Date_naissance_personne,
    				 Lieu_naissance_personne, Sexe_personne
                   FROM personne 
            	   WHERE Type_personne ='".$sType."' ";
		switch($sType)
		{
	    	case 'P':
	    		if($sNom != '')
	    			$sQuery .= " AND Nom_personne = '".$sNom."'" ;
	    		if($sPrenom != '')
	    			$sQuery .= " AND Prenom_personne = '".$sPrenom."'" ;
	    		if($sDateNaissance != '')
	    			$sQuery .= " AND Date_naissance_personne = ".self::$_oConnexion->date($sDateNaissance) ;
	     		 
	    		break;
	    		
	    	case 'M':
	    		if($sNom != '')
	    			$sQuery .= " AND Raison_sociale = '".$sNom."'" ;
	    		if($sPrenom != '')
	    			$sQuery .= " AND Raison_sociale = '".$sPrenom."'" ;
	    		if($sDateNaissance != '')
	    			$sQuery .= " AND Date_naissance_personne = ".self::$_oConnexion->date($sDateNaissance) ;
	    		break;
		}
		if(($iStart != null) && ($iMax != null))
			$sQuery .= " LIMIT ".$iStart.", ".$iMax;
	
        $aRow =  self::$_oConnexion->query($sQuery);
        
        return $aRow;
    }
    
    function personne_recherche($sCritere)
    {
    	return personne_select( $sCritere);
    }
}
?>